%% @author Marc Worrell <marc@worrell.nl>
%% @copyright 2019 Marc Worrell
%% @doc Sort a list or map of languages by their sort_key

%% Copyright 2019 Marc Worrell
%%
%% Licensed under the Apache License, Version 2.0 (the "License");
%% you may not use this file except in compliance with the License.
%% You may obtain a copy of the License at
%%
%%     http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing, software
%% distributed under the License is distributed on an "AS IS" BASIS,
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
%% See the License for the specific language governing permissions and
%% limitations under the License.

-module(filter_language_sort).
-moduledoc("
Sort a list of language codes or map with languages on their sort key. Return a list of `{Code, LanguageProps}` pairs.

LanguageProps is a map:


```erlang
#{
    fallback => [],
    language => <<\"nl\">>,
    language_atom => nl,
    name => <<\"Nederlands\">>,
    name_en => <<\"Dutch\">>,
    sort_key => <<\"dutch\">>,
    sublanguages => [
    ]
}
```
").
-export([
    language_sort/2
]).

language_sort(undefined, _Context) ->
    [];
language_sort([ Code | _ ] = V, _Context) when is_atom(Code) ->
    m_translation:sort_codes(V);
language_sort(V, _Context) ->
    m_translation:sort(V).
